iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0

Info

Walkthrough

  • 存取網頁後使用帳號和上關獲取的密碼登入,有 X1、Y1、X2、Y2 四個輸入框和 DRAW! 按鈕,輸入並提交後會在圖上畫出新的紅線
    • Imgur
    • Imgur
  • 點擊 View sourcecode 超連結查看後端 PHP 程式碼
    • Imgur
  • 分析程式碼邏輯後畫成流程圖如下,可以得知 Cookie 中 drawing 存放序列化的圖片資訊,但程式碼中 Logger 類別完全沒被使用到
    • Imgur
  • Ctrl + Shift + iF12 開啟 DevTools,選擇 Storage (Chrome 的在 Application) 查看 Cookies,發現確實存有名為 drawing 的參數,或者在 Console 輸入 document.cookie 查看完整內容
    • Imgur
  • 透過 CyberChef 解碼可看到序列化的結果
    • Imgur
    • Imgur
  • 因為反序列化後的物件在程式結束會呼叫 __destruct(),將 exitMsg 寫入 log 檔案中,嘗試以此構造出自訂的序列化資料 (記得要做 URL encode 否則無效)
    • Imgur
  • 填入 Cookies 內的 drawing 並重新請求頁面
    • Imgur
    • Imgur
  • 存取指定的檔案路徑,獲得下題的登入密碼
    • Imgur

Note

  • OWASP Top 10 2017 還存在 A8:2017-Insecure Deserialization 反序列化問題,直到 OWASP Top 10 2021 被併入,所以我原本以為這類漏洞只存在於 Wargame 或 CTF 等練習環境,結果最近逛一逛網站發現居然真實存在,雖然可能因為是老網站 (畢竟還在用 PHP 5.5.9),但著實讓我印象深刻
  • 右鍵選擇 View Page Source (檢視網頁原始碼) 或 Ctrl + U 來檢視網頁原始碼,得知圖片路徑是 img/,所以將 PHP 腳本放在此目錄中便能存取

Summary

  • 相關弱點:
  • 弱點原因:
    • 反序列化未經驗證的輸入,執行 PHP 腳本獲取敏感資料
  • 修補建議:
    • 透過簽章等方式驗證資料的完整性,且採取反序列化時放入新物件等安全實作流程,並建議立即更換密碼,以減少資訊洩漏的風險

Reference


上一篇
Day 0x1A Natas Level 24 → Level 25
下一篇
Day 0x1C Natas Level 26 → Level 27
系列文
Natas 網頁安全:從入門到放棄35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言